This invention relates generally to bus management systems and, more specifically, to a system and method for dynamically allocating bandwidth to a plurality of slave cards coupled to a bus.
Many communication and processing systems include one or more cards coupled to a backplane. The backplane typically has a bus that supports communication between the various cards. Because only a single card may communicate over the bus at a time, these communication and processing systems rely on various types of protocols to govern communication over the bus. According to one such protocol, a single card, called a master card, may communicate over the bus with any other card at any time, and the other cards, known as slave cards, may communicate over the bus only when permitted by the master card. Because the slave cards cannot initiate communication over the bus but can only respond to communication from the master card, the master card must periodically poll the slave cards for service by communicating a poll message to each slave card. When a slave card receives a poll message, the slave card may acknowledge receipt of the poll message or respond with a request for service. This master-slave protocol prevents more than one card from utilizing the bus at the same time.
In communication and processing systems, the master card generally allocates a fixed amount of bus bandwidth to each slave card and, thus, polls each slave card at a fixed rate. Unfortunately, a fixed distribution of bus bandwidth does not accommodate the different needs of different types of slave cards and does not adjust as the needs of a slave card change over time. This inefficient distribution of bus bandwidth degrades the performance of communication and processing systems and can cause messages to pile-up at queues associated with the slave cards or the master card. This message pile-up results in inefficient use of memory and may result in loss of messages if a queue is fill. For these reasons, master-slave protocols have had deleterious effects on communication and processing systems.
In accordance with the present invention, a system and method for dynamically allocating bandwidth to a plurality of slave cards is provided that substantially eliminates or reduces disadvantages or problems associated with previously developed systems and methods.
In one embodiment, a bus management system dynamically allocates bandwidth. The system includes a bus and a plurality of slave cards coupled to the bus. The slave cards communicate data to the bus and receive data from the bus. The system also includes a master card coupled to the bus. The master card also communicates data to the bus and receives data from the bus. The master card comprises a memory, a communication module, and a control module. The memory stores bandwidth information indicating bandwidths allocated to the slave cards. The communication module, coupled to the bus and the memory, communicates with the slave cards according to the bandwidths indicated by the bandwidth information. The control module, coupled to the memory, allocates a new bandwidth to a selected slave card and modifies the bandwidth information to indicate the new bandwidth allocated to the selected slave card.
In another embodiment, a slave card communicates with a master card over a bus according to a dynamically allocated bandwidth. The slave card comprises a communication module and a control module. The communication module, coupled to the bus, communicates data to the bus and receives data from the bus according to a first bandwidth allocated to the slave card by the master card. The control module, coupled to the communication module, communicates a bandwidth message requesting the master card to change the first bandwidth allocated to the slave card. The communication module communicates data to the bus and receives data from the bus according to a second bandwidth allocated to the slave card by the master card.
Technical advantages of the present invention include a system and method for dynamically allocating bandwidth to a plurality of slave cards coupled to a bus. According to the present invention, a master card can dynamically allocate bus bandwidth to a plurality of slave cards and communicate with the slave cards according to the dynamically allocated bus bandwidth. As a result, the distribution of bus bandwidth accommodates the different needs of different types of slave cards and adjusts as the needs of a slave card change over time. This dynamic allocation of bus bandwidth results in more efficient use of the bus bandwidth, improved performance of the slave cards, and less message pile-up in queues associated with the master card and slave cards. For example, a slave card executing a bandwidth-intensive application, such as a software download, may exploit the bus bandwidth not being utilized by other slave cards. In addition, a slave card executing a processing-intensive application may receive less bandwidth to avoid the interruptions caused by the master card""s constant polling for service. For these and other readily apparent reasons, the present invention represents a significant advance over prior art systems and methods.